Synchronized এবং Unmodifiable Collections তৈরি

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Decorators এবং Wrapped Collections |
124
124

Apache Commons Collections একটি শক্তিশালী লাইব্রেরি যা Java Collections Framework এর উপর ভিত্তি করে অতিরিক্ত কার্যকারিতা এবং ডাটা স্ট্রাকচার সরবরাহ করে। এর মধ্যে Synchronized Collections এবং Unmodifiable Collections তৈরি করার জন্য বিভিন্ন সুবিধাজনক ইউটিলিটি ক্লাস রয়েছে, যা আপনাকে থ্রেড সেফ কালেকশন তৈরি এবং কালেকশন পরিবর্তন প্রতিরোধ করতে সাহায্য করে।

Synchronized Collections

Synchronized Collections এমন কালেকশন, যা Thread-safe হয়, অর্থাৎ একাধিক থ্রেড একই কালেকশনে একই সময়ে ডেটা অ্যাক্সেস বা পরিবর্তন করতে পারে না। এতে আপনি সহজেই নিশ্চিত করতে পারেন যে, কালেকশন এর উপর কোনো একসাথে একাধিক থ্রেড কাজ করলে ডেটার কোন ধরনের ক্ষতি বা অসামঞ্জস্য হবে না।

Synchronized Collections তৈরি করা:

Synchronized Collections তৈরি করতে Collections.synchronizedXXX() পদ্ধতি ব্যবহার করা হয়। তবে, Apache Commons Collections এ এই ধরনের বিশেষ Synchronized Collections এর জন্যও ইউটিলিটি ক্লাস প্রদান করা হয়েছে।

Apache Commons Collections তে SynchronizedCollection, SynchronizedList, SynchronizedSet, SynchronizedMap ইত্যাদি ক্লাস ব্যবহার করে সিঙ্ক্রোনাইজড কালেকশন তৈরি করা যায়।

Synchronized Collection Example:

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.list.SynchronizedList;

import java.util.ArrayList;
import java.util.List;

public class SynchronizedCollectionExample {
    public static void main(String[] args) {
        // Create a normal list
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        // Make the list synchronized
        List<String> synchronizedList = CollectionUtils.synchronizedList(list);

        // Access the synchronized list in a thread-safe manner
        synchronized(synchronizedList) {
            synchronizedList.forEach(System.out::println);
        }
    }
}

এখানে:

  • CollectionUtils.synchronizedList() ব্যবহার করে ArrayList কে Thread-safe সিঙ্ক্রোনাইজড লিস্টে রূপান্তরিত করা হয়েছে।

Synchronized Set Example:

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.set.SynchronizedSet;

import java.util.HashSet;
import java.util.Set;

public class SynchronizedSetExample {
    public static void main(String[] args) {
        // Create a normal set
        Set<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("cherry");

        // Make the set synchronized
        Set<String> synchronizedSet = CollectionUtils.synchronizedSet(set);

        // Access the synchronized set in a thread-safe manner
        synchronized(synchronizedSet) {
            synchronizedSet.forEach(System.out::println);
        }
    }
}

এখানে:

  • CollectionUtils.synchronizedSet() ব্যবহার করে HashSet কে Thread-safe সিঙ্ক্রোনাইজড সেটে রূপান্তরিত করা হয়েছে।

Unmodifiable Collections

Unmodifiable Collections এমন কালেকশন যেগুলোর উপাদান পরিবর্তন করা সম্ভব নয়। একবার যদি একটি কালেকশন unmodifiable হয়ে যায়, তাহলে আপনি সেই কালেকশনে নতুন আইটেম অ্যাড বা রিমুভ করতে পারবেন না, শুধুমাত্র পড়া (read) সম্ভব হবে। এই ধরনের কালেকশন নিরাপত্তা নিশ্চিত করতে সাহায্য করে, যেমন: আপনার ডেটা যাতে অপ্রত্যাশিতভাবে পরিবর্তিত না হয়।

Unmodifiable Collections তৈরি করা:

Unmodifiable Collections তৈরি করতে Collections.unmodifiableXXX() পদ্ধতি ব্যবহার করা হয়। তবে, Apache Commons Collections লাইব্রেরি UnmodifiableCollection, UnmodifiableList, UnmodifiableSet, UnmodifiableMap ইত্যাদি ক্লাসও প্রদান করে।

Unmodifiable List Example:

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.list.UnmodifiableList;

import java.util.ArrayList;
import java.util.List;

public class UnmodifiableListExample {
    public static void main(String[] args) {
        // Create a normal list
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        // Make the list unmodifiable
        List<String> unmodifiableList = CollectionUtils.unmodifiableList(list);

        // Try to modify the list (will throw UnsupportedOperationException)
        // unmodifiableList.add("date"); // Uncommenting this line will throw an exception
        
        // Print the list
        unmodifiableList.forEach(System.out::println);
    }
}

এখানে:

  • CollectionUtils.unmodifiableList() ব্যবহার করে একটি ArrayList কে Unmodifiable লিস্টে রূপান্তরিত করা হয়েছে।
  • এখানে unmodifiableList.add("date") লাইনটি কমেন্ট করলে চলবে, তবে এটি অ্যাড করার চেষ্টা করলে UnsupportedOperationException ফেলে।

Unmodifiable Set Example:

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.set.UnmodifiableSet;

import java.util.HashSet;
import java.util.Set;

public class UnmodifiableSetExample {
    public static void main(String[] args) {
        // Create a normal set
        Set<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("cherry");

        // Make the set unmodifiable
        Set<String> unmodifiableSet = CollectionUtils.unmodifiableSet(set);

        // Try to modify the set (will throw UnsupportedOperationException)
        // unmodifiableSet.add("date"); // Uncommenting this line will throw an exception
        
        // Print the set
        unmodifiableSet.forEach(System.out::println);
    }
}

এখানে:

  • CollectionUtils.unmodifiableSet() ব্যবহার করে HashSet কে Unmodifiable সেটে রূপান্তরিত করা হয়েছে।

Synchronized vs Unmodifiable Collections

FeatureSynchronized CollectionUnmodifiable Collection
PurposeThread-safety and concurrencyPrevent modification (immutability)
ModificationAllowed, but thread-safeNot allowed (no modification)
Use CaseUsed when multiple threads access and modify collectionsUsed to protect data from unintended modifications
PerformanceSlightly slower due to synchronizationMore performant as no locks or synchronization are needed
ImplementationSynchronized using locking mechanismsWraps the collection to prevent modification

সারাংশ

Synchronized Collections এবং Unmodifiable Collections দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা Apache Commons Collections লাইব্রেরি প্রদান করে। Synchronized Collections থ্রেড সেফ কালেকশন তৈরি করে, যেখানে একাধিক থ্রেড একই সময় কালেকশনে ডেটা অ্যাক্সেস বা পরিবর্তন করতে পারে না। অন্যদিকে, Unmodifiable Collections নিশ্চিত করে যে একবার তৈরি হওয়া কালেকশন পরিবর্তন করা যাবে না, যা ডেটা নিরাপত্তা এবং স্থিরতা বজায় রাখে। উভয় ধরনের কালেকশন আপনাকে নিরাপদ এবং কার্যকরী ডাটা ম্যানেজমেন্ট নিশ্চিত করতে সাহায্য করে, বিশেষ করে মাল্টি-থ্রেডেড পরিবেশে বা ডেটার স্থিরতা বজায় রাখতে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion